Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.ThermodynamicState
redeclare record extends ThermodynamicState "Thermodynamic state of ideal gas" AbsolutePressure p "Absolute pressure of medium"; Temperature T "Temperature of medium"; end ThermodynamicState;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.FluidConstants
redeclare record extends FluidConstants "fluid constants" end FluidConstants;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.BaseProperties
This is the most simple incompressible medium model, where specific enthalpy h and specific internal energy u are only a function of temperature T and all other provided medium quantities are assumed to be constant.
| Type | Name | Default | Description |
|---|---|---|---|
| Advanced | |||
| Boolean | preferredMediumStates | false | = true if StateSelect.prefer shall be used for the independent property variables of the medium |
redeclare replaceable model extends BaseProperties(
T(stateSelect=if preferredMediumStates then StateSelect.prefer else
StateSelect.default),
p(stateSelect=if preferredMediumStates then StateSelect.prefer else
StateSelect.default))
"Base properties of ideal gas"
equation
assert(T >= T_min and T <= T_max, "
Temperature T (= " + String(T) + " K) is not
in the allowed range (" + String(T_min) + " K <= T <= " + String(T_max)
+ " K)
required from medium model \"" + mediumName + "\".
");
h = specificEnthalpy_pTX(p,T,X);
u = h-R*T;
R = R_gas;
d = p/(R*T);
MM = MM_const;
state.T = T;
state.p = p;
end BaseProperties;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.setState_pTX
| Type | Name | Default | Description |
|---|---|---|---|
| AbsolutePressure | p | Pressure [Pa] | |
| Temperature | T | Temperature [K] | |
| MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
| Type | Name | Description |
|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
redeclare function setState_pTX "Return thermodynamic state from p, T, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input Temperature T "Temperature"; input MassFraction X[:]=reference_X "Mass fractions"; output ThermodynamicState state "thermodynamic state record"; algorithm state := ThermodynamicState(p=p,T=T); end setState_pTX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.setState_phX
| Type | Name | Default | Description |
|---|---|---|---|
| AbsolutePressure | p | Pressure [Pa] | |
| SpecificEnthalpy | h | Specific enthalpy [J/kg] | |
| MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
| Type | Name | Description |
|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
redeclare function setState_phX "Return thermodynamic state from p, h, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEnthalpy h "Specific enthalpy"; input MassFraction X[:]=reference_X "Mass fractions"; output ThermodynamicState state "thermodynamic state record"; algorithm state := ThermodynamicState(p=p,T=T0+h/cp_const); end setState_phX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.setState_psX
| Type | Name | Default | Description |
|---|---|---|---|
| AbsolutePressure | p | Pressure [Pa] | |
| SpecificEntropy | s | Specific entropy [J/(kg.K)] | |
| MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
| Type | Name | Description |
|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
redeclare replaceable function setState_psX
"Return thermodynamic state from p, s, and X or Xi"
extends Modelica.Icons.Function;
input AbsolutePressure p "Pressure";
input SpecificEntropy s "Specific entropy";
input MassFraction X[:]=reference_X "Mass fractions";
output ThermodynamicState state "thermodynamic state record";
algorithm
state := ThermodynamicState(p=p,T=Modelica.Math.exp(s/cp_const + Modelica.Math.log(reference_T))
+ R_gas*Modelica.Math.log(p/reference_p));
end setState_psX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.setState_dTX
| Type | Name | Default | Description |
|---|---|---|---|
| Density | d | density [kg/m3] | |
| Temperature | T | Temperature [K] | |
| MassFraction | X[:] | reference_X | Mass fractions [kg/kg] |
| Type | Name | Description |
|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
redeclare function setState_dTX "Return thermodynamic state from d, T, and X or Xi" extends Modelica.Icons.Function; input Density d "density"; input Temperature T "Temperature"; input MassFraction X[:]=reference_X "Mass fractions"; output ThermodynamicState state "thermodynamic state record"; algorithm state := ThermodynamicState(p=d*R_gas*T,T=T); end setState_dTX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.setSmoothState
| Type | Name | Default | Description |
|---|---|---|---|
| Real | x | m_flow or dp | |
| ThermodynamicState | state_a | Thermodynamic state if x > 0 | |
| ThermodynamicState | state_b | Thermodynamic state if x < 0 | |
| Real | x_small | Smooth transition in the region -x_small < x < x_small |
| Type | Name | Description |
|---|---|---|
| ThermodynamicState | state | Smooth thermodynamic state for all x (continuous and differentiable) |
redeclare function extends setSmoothState
"Return thermodynamic state so that it smoothly approximates: if x > 0 then state_a else state_b"
algorithm
state := ThermodynamicState(p=Media.Common.smoothStep(x, state_a.p, state_b.p, x_small),
T=Media.Common.smoothStep(x, state_a.T, state_b.T, x_small));
end setSmoothState;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.pressure
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| AbsolutePressure | p | Pressure [Pa] |
redeclare function extends pressure "Return pressure of ideal gas" algorithm p := state.p; end pressure;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.temperature
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| Temperature | T | Temperature [K] |
redeclare function extends temperature "Return temperature of ideal gas" algorithm T := state.T; end temperature;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.density
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| Density | d | Density [kg/m3] |
redeclare function extends density "Return density of ideal gas" algorithm d := state.p/(R_gas*state.T); end density;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificEnthalpy
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| SpecificEnthalpy | h | Specific enthalpy [J/kg] |
redeclare function extends specificEnthalpy
"Return specific enthalpy"
extends Modelica.Icons.Function;
algorithm
h := cp_const*(state.T-T0);
end specificEnthalpy;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificInternalEnergy
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| SpecificEnergy | u | Specific internal energy [J/kg] |
redeclare function extends specificInternalEnergy "Return specific internal energy" extends Modelica.Icons.Function; algorithm // u := (cp_const-R_gas)*(state.T-T0); u := cp_const*(state.T-T0) - R_gas*state.T; end specificInternalEnergy;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificEntropy
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| SpecificEntropy | s | Specific entropy [J/(kg.K)] |
redeclare function extends specificEntropy "Return specific entropy"
extends Modelica.Icons.Function;
algorithm
s := cp_const*Modelica.Math.log(state.T/T0) - R_gas*Modelica.Math.log(state.p/reference_p);
end specificEntropy;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificGibbsEnergy
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| SpecificEnergy | g | Specific Gibbs energy [J/kg] |
redeclare function extends specificGibbsEnergy "Return specific Gibbs energy" extends Modelica.Icons.Function; algorithm g := cp_const*(state.T-T0) - state.T*specificEntropy(state); end specificGibbsEnergy;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificHelmholtzEnergy
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| SpecificEnergy | f | Specific Helmholtz energy [J/kg] |
redeclare function extends specificHelmholtzEnergy "Return specific Helmholtz energy" extends Modelica.Icons.Function; algorithm f := (cp_const-R_gas)*(state.T-T0) - state.T*specificEntropy(state); end specificHelmholtzEnergy;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.dynamicViscosity
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| DynamicViscosity | eta | Dynamic viscosity [Pa.s] |
redeclare function extends dynamicViscosity "Return dynamic viscosity" algorithm eta := eta_const; end dynamicViscosity;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.thermalConductivity
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| ThermalConductivity | lambda | Thermal conductivity [W/(m.K)] |
redeclare function extends thermalConductivity "Return thermal conductivity" algorithm lambda := lambda_const; end thermalConductivity;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificHeatCapacityCp
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| SpecificHeatCapacity | cp | Specific heat capacity at constant pressure [J/(kg.K)] |
redeclare function extends specificHeatCapacityCp "Return specific heat capacity at constant pressure" algorithm cp := cp_const; end specificHeatCapacityCp;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificHeatCapacityCv
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| SpecificHeatCapacity | cv | Specific heat capacity at constant volume [J/(kg.K)] |
redeclare function extends specificHeatCapacityCv "Return specific heat capacity at constant volume" algorithm cv := cv_const; end specificHeatCapacityCv;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.isentropicExponent
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| IsentropicExponent | gamma | Isentropic exponent [1] |
redeclare function extends isentropicExponent "Return isentropic exponent" algorithm gamma := cp_const/cv_const; end isentropicExponent;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.velocityOfSound
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| VelocityOfSound | a | Velocity of sound [m/s] |
redeclare function extends velocityOfSound "Return velocity of sound " algorithm a := sqrt(cp_const/cv_const*R_gas*state.T); end velocityOfSound;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.specificEnthalpy_pTX
| Type | Name | Default | Description |
|---|---|---|---|
| AbsolutePressure | p | Pressure [Pa] | |
| Temperature | T | Temperature [K] | |
| MassFraction | X[nX] | Mass fractions [kg/kg] |
| Type | Name | Description |
|---|---|---|
| SpecificEnthalpy | h | Specific enthalpy at p, T, X [J/kg] |
redeclare function specificEnthalpy_pTX "Return specific enthalpy from p, T, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input Temperature T "Temperature"; input MassFraction X[nX] "Mass fractions"; output SpecificEnthalpy h "Specific enthalpy at p, T, X"; algorithm h := cp_const*(T-T0); end specificEnthalpy_pTX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.temperature_phX
| Type | Name | Default | Description |
|---|---|---|---|
| AbsolutePressure | p | Pressure [Pa] | |
| SpecificEnthalpy | h | Specific enthalpy [J/kg] | |
| MassFraction | X[nX] | Mass fractions [kg/kg] |
| Type | Name | Description |
|---|---|---|
| Temperature | T | Temperature [K] |
redeclare function temperature_phX "Return temperature from p, h, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEnthalpy h "Specific enthalpy"; input MassFraction X[nX] "Mass fractions"; output Temperature T "Temperature"; algorithm T := h/cp_const + T0; end temperature_phX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.density_phX
| Type | Name | Default | Description |
|---|---|---|---|
| AbsolutePressure | p | Pressure [Pa] | |
| SpecificEnthalpy | h | Specific enthalpy [J/kg] | |
| MassFraction | X[nX] | Mass fractions [kg/kg] |
| Type | Name | Description |
|---|---|---|
| Density | d | density [kg/m3] |
redeclare function density_phX "Return density from p, h, and X or Xi" extends Modelica.Icons.Function; input AbsolutePressure p "Pressure"; input SpecificEnthalpy h "Specific enthalpy"; input MassFraction X[nX] "Mass fractions"; output Density d "density"; algorithm d := density(setState_phX(p,h,X)); end density_phX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.isentropicEnthalpy
| Type | Name | Default | Description |
|---|---|---|---|
| AbsolutePressure | p_downstream | downstream pressure [Pa] | |
| ThermodynamicState | refState | reference state for entropy |
| Type | Name | Description |
|---|---|---|
| SpecificEnthalpy | h_is | Isentropic enthalpy [J/kg] |
redeclare function extends isentropicEnthalpy
"Return isentropic enthalpy"
algorithm
/* s = cp_const*log(refState.T/T0) - R_gas*log(refState.p/reference_p)
= cp_const*log(state.T/T0) - R_gas*log(p_downstream/reference_p)
log(state.T) = log(refState.T) +
(R_gas/cp_const)*(log(p_downstream/reference_p) - log(refState.p/reference_p))
= log(refState.T) + (R_gas/cp_const)*log(p_downstream/refState.p)
= log(refState.T) + log( (p_downstream/refState.p)^(R_gas/cp_const) )
= log( refState.T*(p_downstream/refState.p)^(R_gas/cp_const) )
state.T = refstate.T*(p_downstream/refstate.p)^(R_gas/cp_const)
*/
h_is := cp_const*(refState.T*(p_downstream/refState.p)^(R_gas/cp_const) - T0);
end isentropicEnthalpy;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.isobaricExpansionCoefficient
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| IsobaricExpansionCoefficient | beta | Isobaric expansion coefficient [1/K] |
redeclare function extends isobaricExpansionCoefficient
"Returns overall the isobaric expansion coefficient beta"
algorithm
/* beta = 1/v * der(v,T), with v = 1/d, at constant pressure p:
v = R*T/p
der(v,T) = R/p
beta = p/(R*T)*R/p
= 1/T
*/
beta := 1/state.T;
end isobaricExpansionCoefficient;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.isothermalCompressibility
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| IsothermalCompressibility | kappa | Isothermal compressibility [1/Pa] |
redeclare function extends isothermalCompressibility
"Returns overall the isothermal compressibility factor"
algorithm
/* kappa = - 1/v * der(v,p), with v = 1/d at constant temperature T.
v = R*T/p
der(v,T) = -R*T/p^2
kappa = p/(R*T)*R*T/p^2
= 1/p
*/
kappa := 1/state.p;
end isothermalCompressibility;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.density_derp_T
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| DerDensityByPressure | ddpT | Density derivative w.r.t. pressure [s2/m2] |
redeclare function extends density_derp_T
"Returns the partial derivative of density with respect to pressure at constant temperature"
algorithm
/* d = p/(R*T)
ddpT = 1/(R*T)
*/
ddpT := 1/(R_gas*state.T);
end density_derp_T;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.density_derT_p
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| DerDensityByTemperature | ddTp | Density derivative w.r.t. temperature [kg/(m3.K)] |
redeclare function extends density_derT_p
"Returns the partial derivative of density with respect to temperature at constant pressure"
algorithm
/* d = p/(R*T)
ddpT = -p/(R*T^2)
*/
ddTp := -state.p/(R_gas*state.T*state.T);
end density_derT_p;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.density_derX
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| Density | dddX[nX] | Derivative of density w.r.t. mass fraction [kg/m3] |
redeclare function extends density_derX "Returns the partial derivative of density with respect to mass fractions at constant pressure and temperature" algorithm dddX := fill(0,nX); end density_derX;
Modelica.Media.Interfaces.PartialSimpleIdealGasMedium.molarMass
| Type | Name | Default | Description |
|---|---|---|---|
| ThermodynamicState | state | thermodynamic state record |
| Type | Name | Description |
|---|---|---|
| MolarMass | MM | Mixture molar mass [kg/mol] |
redeclare function extends molarMass "Returns the molar mass of the medium" algorithm MM := MM_const; end molarMass;